#ifndef _SYS_NOT_IMMUTABLE_ERR_H_
#define _SYS_NOT_IMMUTABLE_ERR_H_

#include "Err.h"
#include "SysTypes.h"

#define NOT_IMMUTABLE_ERR_VTABLE(self)   ((NotImmutableErrVTable*)((FanObj*)self)->vtable)


extern Type*    NotImmutableErr_classType;
extern VTable*  NotImmutableErr_classVTable;


/* [sys::NotImmutableErr] Attributes */
struct NotImmutableErr
{
  Err           super;
};


/* [sys::NotImmutableErr] Virtual-table */
typedef struct NotImmutableErrVTable
{
  ErrVTable     super;
} NotImmutableErrVTable;


/* [sys::NotImmutableErr] Methods and fields */
void            NotImmutableErr_make_0(NotImmutableErr* self);
void            NotImmutableErr_make_1(NotImmutableErr* self, Str* msg);
void            NotImmutableErr_make(NotImmutableErr* self, Str* msg, Err* cause);


/* [sys::NotImmutableErr] Extra methods */
NotImmutableErr* NotImmutableErr_new(Str* msg, Err* cause);
NotImmutableErr* NotImmutableErr_newWithFormattedMsg(const char* msgFormat, ...);


/* [sys::NotImmutableErr] Type-system functions */
Type*           NotImmutableErr_initType(void);
VTable*         NotImmutableErr_initVTable(void);
void            NotImmutableErr_initStatic(void);


#endif
